package com.sun.list;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

public class MainForConcurrentHashMap {

    /**
     * HashMap的key和value均可为null，为何ConcurrentHashMap却不可以？
     * 1. ConcurrentHashMap的value不能为null 其中一个原因是因为二义性。
     *    即如果value为null 根据key获取的结果为null，这个null是key对应的value=null，还是key根本不存在而返回的结果为null？
     * 2. 基于二义性，我们可以想到 如果key不存在我们可以不返回null，返回个false就好了，但是在多线程场景下，
     * @param args
     */
    public static void main(String[] args) {
//        ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
//        map.put("1", "1");
//        map.put(null, "1");
//
//        HashMap<String, String> hashMap = new HashMap<>();
//        hashMap.put(null, "1");
//        hashMap.put("1", "1");

        List<String> list =new ArrayList<>();
//        list.add("1");
//        list.add("2");
//        list.add("3");
        list.add("4");
        for (String item : list) {
            if ("4".equals(item)) {
                list.remove(item);
            }
        }
    }
}
